# BCS

The `@mysten/sui/bcs` package extends `@mysten/bcs` with Sui specific scheme definitions.

To learn more about using BCS see the [BCS documentation](/bcs).

the `bcs` export of `@mysten/sui/bcs` contains all the same exports as `bcs` from `@mysten/bcs` plus
the following pre-defined schemes:

- `U8`
- `U16`
- `U32`
- `U64`
- `U128`
- `U256`
- `ULEB128`
- `Bool`
- `String`
- `Address`
- `Argument`
- `CallArg`
- `CompressedSignature`
- `GasData`
- `MultiSig`
- `MultiSigPkMap`
- `MultiSigPublicKey`
- `ObjectArg`
- `ObjectDigest`
- `ProgrammableMoveCall`
- `ProgrammableTransaction`
- `PublicKey`
- `SenderSignedData`
- `SharedObjectRef`
- `StructTag`
- `SuiObjectRef`
- `Transaction`
- `TransactionData`
- `TransactionDataV1`
- `TransactionExpiration`
- `TransactionKind`
- `TypeTag`

All the upper-cased values are `BcsType` instances, and can be used directly to parse and serialize
data.

```typescript
import { bcs } from '@mysten/sui/bcs';

bcs.U8.serialize(1);
bcs.Address.serialize('0x1');
bcs.TypeTag.serialize({
	vector: {
		u8: true,
	},
});
```
